From 53de02c963c0ea4e0ed8131b1c4efc647b5a29ac Mon Sep 17 00:00:00 2001 From: robertl Date: Wed, 7 Jan 2004 16:27:37 +0000 Subject: [PATCH] From Mark Hammond. Go less nuts with CDATA encoding, commonize many tag outputs. --- gpx.c | 119 ++++++++++++++++++++-------------------------------------- 1 file changed, 40 insertions(+), 79 deletions(-) diff --git a/gpx.c b/gpx.c index cb6aaa152..2c3f9ad1d 100644 --- a/gpx.c +++ b/gpx.c @@ -160,6 +160,23 @@ tag_mapping tag_path_map[] = { }; +static void +write_xml_entity(FILE *ofd, const char *indent, + const char *tag, const char *value) +{ + char *tmp_ent = xml_entitize(value); + fprintf(ofd, "%s<%s>%s\n", indent, tag, tmp_ent, tag); + xfree(tmp_ent); +} + +static void +write_optional_xml_entity(FILE *ofd, const char *indent, + const char *tag, const char *value) +{ + if (value && *value) + write_xml_entity(ofd, indent, tag, value); +} + static tag_type get_tag(const char *t) { @@ -192,7 +209,7 @@ tag_wpt(const char **attrv) { const char **avp = &attrv[0]; - wpt_tmp = xcalloc(sizeof(*wpt_tmp), 1); + wpt_tmp = waypt_new(); cur_tag = NULL; while (*avp) { @@ -941,46 +958,23 @@ gpx_waypt_pr(const waypoint *waypointp) if (waypointp->creation_time) { gpx_write_time(waypointp->creation_time, "time"); } - if (oname) { - tmp_ent = xml_entitize(oname); - fprintf(ofd, "%s\n", tmp_ent); - xfree(tmp_ent); - } - if (waypointp->description) { - fprintf(ofd, ""); - fprintf(ofd, "", waypointp->description); - fprintf(ofd, "\n"); - } - if (waypointp->notes) { - fprintf(ofd, ""); - fprintf(ofd, "", waypointp->notes); - fprintf(ofd, "\n"); - } else { - if (waypointp->description) { - fprintf(ofd, ""); - fprintf(ofd, "", waypointp->description); - fprintf(ofd, "\n"); - } - } + write_optional_xml_entity(ofd, " ", "name", oname); + write_optional_xml_entity(ofd, " ", "cmt", waypointp->description); + if (waypointp->notes) + write_xml_entity(ofd, " ", "desc", waypointp->notes); + else + write_optional_xml_entity(ofd, " ", "desc", waypointp->description); if (waypointp->altitude != unknown_alt) { - fprintf(ofd, "\n%f\n\n", + fprintf(ofd, " %f\n", waypointp->altitude); } if (waypointp->url) { tmp_ent = xml_entitize(waypointp->url); - fprintf(ofd, "%s%s\n", urlbase ? urlbase : "", tmp_ent); - xfree(tmp_ent); - } - if (waypointp->url_link_text) { - tmp_ent = xml_entitize(waypointp->url_link_text); - fprintf(ofd, "%s\n", tmp_ent ); - xfree(tmp_ent); - } - if (waypointp->icon_descr) { - tmp_ent = xml_entitize(waypointp->icon_descr); - fprintf(ofd, "%s\n", tmp_ent ); + fprintf(ofd, " %s%s\n", urlbase ? urlbase : "", tmp_ent); xfree(tmp_ent); } + write_optional_xml_entity(ofd, " ", "urlname", waypointp->url_link_text); + write_optional_xml_entity(ofd, " ", "sym", waypointp->icon_descr); fprint_xml_chain( waypointp->gpx_extras, waypointp ); fprintf(ofd, "\n"); @@ -992,16 +986,8 @@ gpx_track_hdr(const route_head *rte) char * tmp_ent; fprintf(ofd, "\n"); - if (rte->rte_name) { - tmp_ent = xml_entitize(rte->rte_name); - fprintf(ofd, "%s\n", tmp_ent); - xfree(tmp_ent); - } - if (rte->rte_desc) { - tmp_ent = xml_entitize(rte->rte_desc); - fprintf(ofd, "%s\n", tmp_ent); - xfree(tmp_ent); - } + write_optional_xml_entity(ofd, " ", "name", rte->rte_name); + write_optional_xml_entity(ofd, " ", "desc", rte->rte_desc); if (rte->rte_num) { fprintf(ofd, "%d\n", rte->rte_num); } @@ -1043,57 +1029,32 @@ gpx_route_hdr(const route_head *rte) char * tmp_ent; fprintf(ofd, "\n"); - if (rte->rte_name) { - tmp_ent = xml_entitize(rte->rte_name); - fprintf(ofd, "%s\n", tmp_ent); - xfree(tmp_ent); - } - if (rte->rte_desc) { - tmp_ent = xml_entitize(rte->rte_desc); - fprintf(ofd, "%s\n", tmp_ent); - xfree(tmp_ent); - } + write_optional_xml_entity(ofd, " ", "name", rte->rte_name); + write_optional_xml_entity(ofd, " ", "desc", rte->rte_desc); if (rte->rte_num) { - fprintf(ofd, "%d\n", rte->rte_num); + fprintf(ofd, " %d\n", rte->rte_num); } } static void gpx_route_disp(const waypoint *waypointp) { - fprintf(ofd, "\n", + fprintf(ofd, " \n", waypointp->latitude, waypointp->longitude); if (waypointp->altitude != unknown_alt) { - fprintf(ofd, "%f\n", + fprintf(ofd, " %f\n", waypointp->altitude); } if (waypointp->creation_time) { gpx_write_time(waypointp->creation_time,"time"); } - if (waypointp->shortname) { - fprintf(ofd, ""); - fprintf(ofd, "", waypointp->shortname); - fprintf(ofd, "\n"); - } - if (waypointp->description) { - fprintf(ofd, ""); - fprintf(ofd, "", waypointp->description); - fprintf(ofd, "\n"); - } - if (waypointp->notes) { - fprintf(ofd, ""); - fprintf(ofd, "", waypointp->notes); - fprintf(ofd, "\n"); - } - if (waypointp->icon_descr) { - fprintf(ofd, ""); - fprintf(ofd, "", waypointp->icon_descr); - fprintf(ofd, ""); - } - - fprintf(ofd, "\n"); + write_optional_xml_entity(ofd, " ", "name", waypointp->shortname); + write_optional_xml_entity(ofd, " ", "cmt", waypointp->description); + write_optional_xml_entity(ofd, " ", "desc", waypointp->notes); + write_optional_xml_entity(ofd, " ", "sym", waypointp->icon_descr); + fprintf(ofd, " \n"); } static void -- 2.30.2